Jersey-2.x-User-Guide

Chapter 23. Spring DI 使用 Spring 注入

Jersey 提供对 Spring DI 的扩展。使得 Jersey 在使用 Spring bean 时 就像是 JAX-RS 的组件 (比如 资源和提供者) 并且允许 Spring 注入 Jersey 管理的组件中。

这个 Spring 扩展模块配置是基于注解的。当 Spring bean 注入,就会产生的 受 Spring 管理的 JAX-RS 类。 注入的 Spring bean 不只是 通过 Spring XML 来配置,也支持用 Spring 的 单例和 请求域。

为了 JAX-RS 资源能和 Spring 的功能正常工作还需要代理,比如 Spring 的事务管理(用 @Transactional), Spring Security 和 面向切面编程(如 @Aspect),资源必须通过Spring 的注解 @Component, @Service, @Controller 或 @Repository 来管理:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import org.springframework.stereotype.Component;

@Component
@Path("/")
public class SomeResource {

    @Transactional
    @GET
    public void updateResource() {
        // ...
    }
}

局限性: Spring bean 不能通过 Spring XML 配置被直接注射到 JAX-RS 类